package org.agent.aigccore.dao.mappers.mysql;

import org.agent.aigccore.model.po.IotWorkOrderPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface IotWorkOrderMapper {

    /**
     * 根据 ID 查询IoT工单
     *
     * @param id IoT工单 ID
     * @return IoT工单实体
     */
    IotWorkOrderPO load(@Param("id") Long id);

    /**
     * 根据 ID 查询IoT工单（加锁）
     *
     * @param id IoT工单 ID
     * @return IoT工单实体
     */
    IotWorkOrderPO lock(@Param("id") Long id);

    /**
     * 分页查询IoT工单
     *
     * @param status         状态
     * @param businessGroupId 业务组ID
     * @param offset         偏移量
     * @param pageSize       页面大小
     * @return IoT工单列表
     */
    List<IotWorkOrderPO> page(@Param("status") String status, @Param("businessGroupId") Long businessGroupId, @Param("offset") int offset, @Param("pageSize") int pageSize);

    /**
     * 根据任务名称查询IoT工单
     *
     * @param name 任务名称
     * @return IoT工单列表
     */
    List<IotWorkOrderPO> queryByName(@Param("name") String name);

    /**
     * 根据rms任务id查询IoT工单
     *
     * @param outBizId rms任务id
     * @return IoT工单列表
     */
    List<IotWorkOrderPO> queryByOutBizId(@Param("outBizId") String outBizId);

    /**
     * 新增IoT工单
     *
     * @param iotWorkOrderPO IoT工单实体
     * @return 插入记录数
     */
    int insert(IotWorkOrderPO iotWorkOrderPO);

    /**
     * 更新IoT工单
     *
     * @param iotWorkOrderPO IoT工单实体
     * @return 更新记录数
     */
    int update(IotWorkOrderPO iotWorkOrderPO);

    /**
     * 删除IoT工单
     *
     * @param id IoT工单ID
     * @return 删除记录数
     */
    int delete(@Param("id") Long id);
}